<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

</body>
<script>
  // 如果函数声明在块级作用域中，那么函数声明只能在块级作用域中访问，不能在块级作用域外访问
  // 如果作用域中存在同名变量，那么函数声明会覆盖变量声明，但是不会覆盖变量赋值
  // 如果作用域外和作用域内存在同名变量，在执行到作用内的函数声明时，会将作用内的函数赋值给作用域外的变量

  let a
  console.log(a)
  if (true) {
    console.log(a)
    a = 5
    function a() { }
    console.log(a)
    function b() { }
    a = 0
    console.log(a)
  }
  console.log(a)
  console.log(b)
</script>

</html>